home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #1 / Amiga Plus 1995 #1.iso / fish-disketten / fish_941-950 / d945 / emacsstarter / lisp / sticky.el < prev    next >
Lisp/Scheme  |  1994-12-13  |  2KB  |  71 lines

  1. ;;;
  2. ;;; FILE
  3. ;;;    sticky.el        $VER: V1.00 sticky.el
  4. ;;;
  5. ;;; DESCRIPTION
  6. ;;;    ELisp part of Emacs Starter Deluxe. This code 
  7. ;;;    is loaded when Emacs is invoked in "sticky" mode.
  8. ;;;
  9. ;;;    Place this file somewhere in your lisp-path, for example
  10. ;;;    in the directory GnuEmacs:lisp.
  11. ;;;
  12. ;;;    Please read the file "starter.doc".
  13. ;;;
  14. ;;; AUTHORS
  15. ;;;    Anders Lindgren, d91ali@csd.uu.se
  16. ;;;    Bo Liljegren, bo-lilje@dsv.su.se
  17. ;;;
  18. ;;; LICENSE
  19. ;;;     Copyright (C) 1993  Anders Lindgren  and  Bo Liljegren
  20. ;;;
  21. ;;;    This program is free software; you can redistribute it and/or modify
  22. ;;;    it under the terms of the GNU General Public License as published by
  23. ;;;    the Free Software Foundation; either version 2 of the License, or
  24. ;;;    (at your option) any later version.
  25. ;;;
  26. ;;;    This program is distributed in the hope that it will be useful,
  27. ;;;    but WITHOUT ANY WARRANTY; without even the implied warranty of
  28. ;;;    MERCHANTABILITY of FITNESS FOR A PARTICULAR PURPOSE. See the
  29. ;;;    GNU General Public License for more details.
  30. ;;;
  31. ;;;    You should have received a copy of the GNU General Public License
  32. ;;;    along with this program; if not, write to the Free Software
  33. ;;;    Foundation, Inc., 675 Mass Ave, Cambridge, Ma 02139, USA.
  34. ;;;
  35. ;;; HISTORY
  36. ;;;    24-Sep-93 ALi  Created this file.
  37. ;;;
  38.  
  39.  
  40. (provide 'sticky)
  41.  
  42. (make-variable-buffer-local 'sticky-rexx-port)
  43. (set-default 'sticky-rexx-port nil)
  44.  
  45. (if (not (fboundp 'old-kill-buffer))
  46.     (fset 'old-kill-buffer (symbol-function 'kill-buffer)))
  47.  
  48. ;;; Redefine the kill-buffer function.
  49. ;;; If the buffer is in "sticky" mode, notify the client that this buffer is no more.
  50. ;;; The reason why we're asking whether to kill the buffer or not, is to avoid a situation
  51. ;;; where the client is notified but the user answers no.
  52. (defun kill-buffer (buffer)
  53.   "One arg, a string or a buffer.  Get rid of the specified buffer.
  54. Any processes that have this buffer as the `process-buffer' are killed
  55. with `delete-process'.
  56. Patched to notify client."
  57.   (interactive "bKill buffer: ")
  58.   (if (eq (setq buffer (get-buffer buffer)) nil)
  59.       nil
  60.     (save-excursion
  61.       (set-buffer buffer)
  62.       (if (or (not (buffer-modified-p buffer))
  63.           (not (buffer-file-name))
  64.           noninteractive
  65.           (yes-or-no-p (format "Buffer %s modified; kill anyway? " (buffer-name))))
  66.       (progn
  67.         (set-buffer-modified-p nil)
  68.         (if sticky-rexx-port
  69.         (amiga-arexx-send-command (concat "ADDRESS " sticky-rexx-port " TERMINATING") t))
  70.         (old-kill-buffer buffer))))))
  71.